package designmode;

/**
 * @Author fallrain
 * @Description 设计模式--单例模式
 * @Date 2022/2/11 14:23
 * @Version 1.0
 */
public class SingletonMode03 {

    private static SingletonMode03 singletonMode03;
    /**
     * 构造方法私有不允许从外部实例对象
     */
    private SingletonMode03(){}

    /**
     * 3.懒汉式（线程不安全）【不可用】
     * 这种写法起到了Lazy Loading的效果，但是只能在单线程下使用。如果在多线程下，一个线程进入了if (singleton == null)判断语句块，还未来得及往下执行，另一个线程也通过了这个判断语句，这时便会产生多个实例。所以在多线程环境下不可使用这种方式。
     * @return
     */
    public static SingletonMode03 getInstance(){
        if(singletonMode03 == null){
            singletonMode03 = new SingletonMode03();
        }
        return singletonMode03;
    }
}
